const nav = [
    // 配置顶部导航栏 为了热更新先在这里
    {
        text: '指南',
        link: '/guide/',
    },
    {
        text: '测试',
        link: '/test/',
    },
    {
        text: '组件',
        link: '/comps/',
    },
    {
        text: '总结',
        items: [
            {
                text: 'node',
                link: '/node/',
            },
            {
                text: 'npm',
                link: '/npm/',
            },
            {
                text: 'py(派森)',
                link: '/py/',
            },
        ],
    },
]

const sidebar = {
    // 配置侧边栏部分
    '/guide/': ['/guide/'],
    '/comps/': [
        {
            title: '开始', // 必要的
            path: '/comps/', // 可选的, 标题的跳转链接，应为绝对路径且必须存在
            collapsable: true, // 可选的, 默认值是 true,
            sidebarDepth: 1,
            children: ['/comps/start/install.md'],
        },
        {
            title: '基础', // 必要的
            path: '', // 可选的, 标题的跳转链接，应为绝对路径且必须存在
            collapsable: true, // 可选的, 默认值是 true,
            sidebarDepth: 1,
            children: [
                '/comps/base/grid.md',
                '/comps/base/icon.md',
                '/comps/base/button.md',
            ],
        },
        {
            title: '展示类', // 必要的
            path: '', // 可选的, 标题的跳转链接，应为绝对路径且必须存在
            collapsable: true, // 可选的, 默认值是 true,
            sidebarDepth: 1,
            children: ['/comps/show/card.md'],
        },
    ],
    '/npm/': [{
        title: 'npm', // 必要的
        path: '', // 可选的, 标题的跳转链接，应为绝对路径且必须存在
        collapsable: false, // 可选的, 默认值是 true,
        sidebarDepth: 1,
        children: [
            '/npm/',
            '/npm/01',
            '/npm/02',
        ],
    },
    ],
}

const baseUrl = '/rl-docs-v2/' // git pages 部署路径 /rl-docs-v2/
module.exports = {
    theme: 'vuepress-theme-reco',
    title: 'ReallyLife 组件库vue2.0',
    description: 'ReallyLife的组件库文档教程示例代码',
    base: baseUrl,
    port: '8331',
    cache: false, // 去掉缓存
    themeConfig: {
        displayAllHeaders: false,
        nav: nav, // 配置顶部导航栏
        sidebar: sidebar, // 配置侧边栏部分
        search: true,
        searchMaxSuggestions: 10,
        lastUpdated: 'Last Updated',
        subSidebar: 'auto'
    },

    head: [
        ['link', {rel: 'icon', href: '/img/logo.png'}],
        ['link', {rel: 'stylesheet', href: '/css/style.css'}],
    ],
    plugins: {
        '@vuepress/back-to-top': true,
        'vuepress-plugin-code-copy': true,
        'vuepress-plugin-run': {
            reserve: true,
            jsLabs: [
                `${baseUrl}js/vue.min.js`,
                `${baseUrl}js/axios.min.js`,
                `${baseUrl}js/vue-clipboard.min.js`,
                `${baseUrl}rl-lib/rl-ui.umd.js`,
            ],
            cssLabs: [
                `${baseUrl}rl-lib/rl-ui.css`,
                `${baseUrl}css/run-sfc.css`,
                `${baseUrl}css/style.css`,
            ],
        },
    },
    markdown: {
        // extendMarkdown: (md) => {
        //     // 临时 解决 vue-run-sfc bug
        //     md.use(require('markdown-it-container'), 'run', {
        //         render (tokens, idx) {
        //
        //             const start = tokens[idx]
        //             const { nesting, info } = start
        //             if (nesting === -1) {
        //                 return '\n'
        //             }
        //
        //             let customOptions = info.match(/\{.*?\}/)
        //             if (customOptions) {
        //                 try {
        //                     // eslint-disable-next-line no-new-func
        //                     customOptions = new Function(`return ${customOptions[0]}`)()
        //                 } catch {
        //                     customOptions = {}
        //                 }
        //             }
        //             const attrs = Object.assign({}, { themeColor: '#111111', themeBorderColor: '#999' }, customOptions)
        //             let htmlStr = ''
        //             let lastLine = 0
        //
        //             for (let index = idx; index < tokens.length; index++) {
        //                 const { map, type, content } = tokens[index]
        //                 if (type === 'container_run_close') break
        //                 if (map) {
        //                     const delta = map[0] - (lastLine || map[1])
        //                     if (delta > 0) {
        //                         htmlStr += '\n'.repeat(delta)
        //                     }
        //                     lastLine = map[1]
        //                 }
        //                 htmlStr += content
        //             }
        //             return `<vue-run-sfc v-bind='${JSON.stringify(attrs)}' code="${encodeURIComponent(htmlStr)}"></vue-run-sfc>`
        //         },
        //     })
        // }
    },

}
